<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style></style>
  </head>
  <body>
    <input type="text" class="txt" />
  </body>
</html>
<script>
  // 12.在输入框输入内容后,等待1s后发送请求,如果1s内输入框内容改变了,则重新等待1s(防抖)
  //   // 获取输入框
  var txtEle = document.querySelector('.txt');
  // 设置防抖函数
  function debounce(fn, delay) {
    // console.log(fn);
    var timer;
    return function () {
      clearTimeout(timer);
      if (!timer) {
        console.log('请等待1S');
        fn();
      }
      timer = setTimeout(function () {
        timer = null;
      }, delay);
    };
  }
  txtEle.oninput = debounce(function () {
    console.log(txtEle.value);
  }, 3000);

  // 13.我们要拷贝一个对象(深拷贝和浅拷贝)的做法

  /* -----------------浅拷贝--------------- */
  //   var obj = {
  //     id: 1,
  //     name: '王伟伦',
  //     msg: {
  //       age: 20,
  //       color: ['blue', 'red'],
  //     },
  //   };
  //   var o = {};
  //   for (var k in obj) {
  //     // k 是属性名 obj[k] 是属性值
  //     o[k] = obj[k];
  //   }
  //   console.log(o);
  //   o.msg.age = 20;
  //   console.log(obj);

  /* -----------------深拷贝--------------- */
  // var obj = {
  //   id: 1,
  //   name: '王伟伦',
  //   msg: {
  //     age: 18,
  //   },
  //   color: ['red', 'blue'],
  // };
  // var o = {};
  // // 用递归的方式完成深拷贝
  // // 封装函数
  // function deepCopy(newObj, oldObj) {
  //   // 遍历oldObj的属性名
  //   for (var k in oldObj) {
  //     // 读取属性值
  //     var item = oldObj[k];
  //     // 判断是否属于数组
  //     if (item instanceof Array) {
  //       newObj[k] = []; // 先给newObj添加一个属性k
  //       deepCopy(newObj[k], item); // 把oldObj赋值给newObj
  //     } else if (item instanceof Object) {
  //       // 判断是否属于对象
  //       newObj[k] = {};
  //       deepCopy(newObj[k], item);
  //     } else {
  //       // 属于简单数据类型
  //       newObj[k] = item;
  //     }
  //   }
  // }
  // deepCopy(o, obj);
  // console.log(o);
</script>
